package puertos;
import giovynet.nativelink.SerialPort;
import giovynet.permissions.Info;
import giovynet.serial.Baud;
import giovynet.serial.Com;
import giovynet.serial.Parameters;
import java.util.List;


public class PortRS232 {
    
   public static void main (String[] arg) throws Exception{
        
       showsInfoAboutGiovynetDriver();                                  // Muestra información sobre Giovynet Conductor
        
        SerialPort serialPort = new SerialPort();
        
        List<String> lstFreeSerialPort = serialPort.getFreeSerialPort();//Obtiene una lista de los puertos serie libres
        
        if(lstFreeSerialPort.size()>0){                                 //si hay puertos libres
        
            Parameters parameters = new Parameters();                   //Crear un objeto de parámetros
            
            parameters.setPort(lstFreeSerialPort.get(0));               //asigna el primer puerto encontrado
            
            parameters.setBaudRate(Baud._460800);                       //asigna la velocidad de transmisión
            
            parameters.setByteSize("8");                                // asigna tamaño en bytes
            
            parameters.setParity("N");                                  // asigna la paridad
            
            Com com  = new  Com(parameters);                            // Con los "parámetros" crea una "Com"
            
            for (int i = 0; i < 10; i++) {                              //Enviar y recibir datos cada 800 milisegundos
                com.sendSingleData(41);
                System.out.println("Enviar 41 (integer) ...");
                Thread.sleep(800);                                      //espera 0.8 segundos
                int  dataReceived =com.receiveSingleCharAsInteger();
                System.out. println("...Datos recibidos: "+dataReceived);
                Thread.sleep(800);                                      //espera 0.8 segundos
            }
            System.out.println("-- Fin de transmision--");
            
        }else{
        	System.out.println("No hay puertos serie libres ni emulados, simplemente no hay!.");
        }   
        
   }
   public static void showsInfoAboutGiovynetDriver(){
       System.out.println("------------------------------------------------------------------------------->");
       System.out.println("Giovynet Driver versión: \t\t"+Info.getVersion());
       System.out.println("Tipo de distribución: \t\t\t"+Info.getTypeOfDistribution());
       System.out.println("Numero de dispositivos permitidos: \t"+Info.getNumDevicesAllowed());
       System.out.println("Permisos de distribución:: \t\t"+Info.getDistributionLicense());
       System.out.println("<-------------------------------------------------------------------------------");
    }  
    
}
